﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using Td.Additional.Environment;

namespace TestApp
{
    /// <summary>
    /// Test parameter class.
    /// </summary>
    public class ParameterClass
    {
        [CommandLineParameter(Description = "A list of nags.", ShortName = "nags")]
        [CommandLineParameter(Option = ParameterOption.Optional, ValueOption = ValueOption.RequiredMultiple, DefaultValue = "You")]
        public List<String> Nags { get; set; }

        [CommandLineParameter(Description = "The id of the leader", ShortName = "id")]
        [CommandLineParameter(Option = ParameterOption.Optional, ValueOption = ValueOption.Required, DefaultValue = "123")]
        public int LeaderId { get; set; }

        [CommandLineParameter(Description = "The name of the leader", ShortName = "leader")]
        [CommandLineParameter(Option = ParameterOption.Optional, ValueOption = ValueOption.Required)]
        public String LeaderName { get; set; }

        [CommandLineParameter(Description = "The password of the leader", ShortName = "password")]
        [CommandLineParameter(Option = ParameterOption.Optional, ValueOption = ValueOption.Required, Requires="LeaderName")]
        public String LeaderPassword { get; set; }

        [Description("Show help screen. If this line is too long, the words will be wraped into a new line to get a better looking help screen. Nice, or not? If you have any suggestions, please dont hesitate to tell them us.")]
        [CommandLineParameter(Option = ParameterOption.Optional, ValueOption = ValueOption.None, ShortName = "h")]
        public Boolean Help { get; set; }

        public ParameterClass()
        {
            Nags = new List<string>();
        }
    }
}